package com.bird.设计模式.创建型.原型模式.深克隆和浅克隆;

import java.util.Date;

/**
 * @data 2022/3/14 10:02
 * @author: bird
 * @description: 测试深克隆和浅克隆
 */
public class Test {

    public static void main(String[] args) throws CloneNotSupportedException {
        Date birthday = new Date(0L);
        Pig pig1 = new Pig("小猪佩奇", birthday);
        Pig pig2 = (Pig)pig1.clone();
        System.out.println(pig1);// pig1 是通过构造器实例化出来的对象
        System.out.println(pig2);// pag2 是通过clone实例化出来的对象

        System.out.println("==============下面是修改日期之后的数据.....==================");
        pig1.getDate().setTime(6666666L);
        System.out.println(pig1);
        System.out.println(pig2);

    }
/*
*  浅克隆会随着构造对象的里面的引用类型的数据变更进行变更。且默认是浅克隆
*
*
*
*
*总结：
* 如果类的属性里面存在引用类型的属性 那么在克隆的时候就需要进行对这个引用类型进行克隆然后 这就是深克隆。
*  */
}
